package reference;

public class Human {

    String name;
    String gender;
    int age;

    Human(){
        System.out.println("一个人从世界上诞生了");
    }
    //这里出现了构造方法重载。
    Human(String name,String gender,int age){
        this(); //在构造方法中使用this关键字调用本类的其它构造方法。
        this.name = name;
        this.gender = gender;
        this.age = age;
    }
    public void eat(){
        System.out.println(this.name + "正在吃...");
    }

    public void think(){
        System.out.println(this.name + "正在思考人生中...");
    }

    public static void main(String[] args){
        Human h = new Human("张三","男",18);
        h.think();  //此时h指向张三对象
        h = new Human("李四","女",20);
        h.think(); //此时h指向李四对象
        h = null;  //此时h不指向任何对象

        //下面就是一个匿名对象
        new Human("王五","男",19).think();

        h.think();  //这里会抛出 NullPointerException

         //程序执行结束时，内存中一个引用(h引用)，两个对象(张三和李四)。


    }
}
